package com.example.myapplication1227;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {


    //通过内容提供者获取通讯录中的联系人信息
    //1.需要添加权限
    //在安卓6.8以上的系统能够权限不仅要声明 还需要动态获取
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //判断权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){
            //动态获取
            ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_CONTACTS},1);
        }
        else {
            //则直接获取
            readContacts();
        }

    }
    //权限获取结果
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //判断用户是否点击了背景
        if (grantResults.length>0){
            if (grantResults[0]==PackageManager.PERMISSION_GRANTED)
            {
                //执行获取联系人
            }
            else {
                //提示无权限
                Toast.makeText(this,"无权限",Toast.LENGTH_SHORT).show();
            }
        }
    }
    //获取联系人
    private void readContacts()
    {
        //使用内容提供者 获取联系人信息
        //1.定义URI
        Uri contentUri= ContactsContract.Contacts.CONTENT_URI;
        //2.通过内容提供者解析器，获取一个数据游标
        Cursor query=getContentResolver().query(contentUri,null,null,null,null);
        //使用游标 获取相关信息
        //3.1获取总数
        int count=query.getCount();
        Log.d("MainActivity","readContacts:"+count);
        //获取细节
        while ( query.moveToNext())
        {
            //挨个获取信息
            //获取id
          int id=  query.getInt(query.getColumnIndex("_id"));
            //获取姓名
           String name= query.getString(query.getColumnIndex("display_name"));
           //获取号码
            String phoneNumber="";
            //获取号码个数
            int number=query.getInt(query.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
            if (number>0){
                //获取第一个号码
               Cursor query1= getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?",
                        new String[]{Integer.toString(id)},null);
                query1.moveToFirst();
                phoneNumber=query1.getString(query1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            }
            //打印输出
            Log.d("MainActivity","获取姓名："+name);
            Log.d("MainActivity","获取号码个数："+number);
            Log.d("MainActivity","获取号码："+phoneNumber);
        }

    }
}